﻿using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;

namespace Fadada.FASC.SDK.DotNetCore.Model
{
    public class FieldPosition
    {
        /// <summary>
        /// 定位模式：
        /// pixel: 像素值，计算方法参考文档页面坐标定位计算方
        /// 法。
        /// keyword: 关键字定位。
        /// 注意：
        /// 1)当设置pixel模式且为骑缝章时，positionY不能为空。
        /// 2)当设置pixel模式且为非骑缝章时，positionPageNo、
        /// positionX和positionY不能为空。
        /// 3)当设置keyword模式时，positionKeyword不能为
        /// 空。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "positionMode", Required = Required.Always)]
        public string PositionMode { get; set; }

        /// <summary>
        /// 定位页码。首页从1开始。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "positionPageNo", Required = Required.AllowNull)]
        public int PositionPageNo { get; set; }

        /// <summary>
        /// 中心点定位坐标横向偏移量。该参数对骑缝签章无效，因为骑缝章只在Y坐标上。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "positionX", Required = Required.AllowNull)]
        public string PositionX { get; set; }

        /// <summary>
        /// 中心点定位坐标纵向偏移量。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "positionY", Required = Required.AllowNull)]
        public string PositionY { get; set; }

        /// <summary>
        /// 关键字定位。系统将自动匹配关键字，将真实坐标定位在
        /// 关键字的中心点。如该关键字匹配出多个区域位置时，将
        /// 为各区域位置动态生成多个fieldId (生成规则：在原fieldId
        /// 后拼接后缀"_n"，n为自增数字)。
        /// 注意：
        /// 1. 该参数只在创作模板或创建任务环节设定控件时才使
        /// 用，而从模板和签署任务中读取的控件将总是有明确的位
        /// 置。
        /// 2. 如果关键字动态生成了多个位置，参与方要关联该关键
        /// 字得多个位置时，需要通过fieldName来关联。
        /// </summary>
        [JsonProperty(NullValueHandling = NullValueHandling.Ignore, PropertyName = "positionKeyword", Required = Required.AllowNull)]
        public string PositionKeyword { get; set; }
    }
}